package cn.com.connected.base.params.page;

import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;

import javax.validation.Valid;

/**
 * 在此处使用getSearchOption 目前无法实现为null时初始化
 * 但是根据前端传{‘searchOption’:{}} 可以实现初始化searchOption可以得知，spring本身是可以初始化的
 * 可以考虑从这儿入手 暂时实现方式为 server-onecode 项目中的 ParamsAOP
 * @param <T>
 */

@Setter
@Getter
public class BaseSearchDto<T>{

    @ApiModelProperty(notes = "分页参数")
    PageParam pageParam;

    //如果传参没有传 会在ParamsAOP根据T泛型实例化对象，不用担心为空
    @Valid
    @ApiModelProperty(notes = "查询参数")
    T searchOption;

    public BaseSearchDto() {
    }

    public BaseSearchDto(PageParam pageParam, T searchOption) {
        //不要直接等于 让他走一下构造器，这样可以过一下设置
        this.pageParam = new PageParam(pageParam.getPageIndex(), pageParam.getPageSize());
        this.searchOption = searchOption;
    }

    public void setPageParam(final PageParam pageParam) {
        //不要直接等于 让他走一下构造器，这样可以过一下设置
        this.pageParam = new PageParam(pageParam.getPageIndex(), pageParam.getPageSize());
    }
}